package com.lh.service;

import com.lh.pojo.Items;
import com.lh.pojo.ItemsImg;
import com.lh.pojo.ItemsParam;
import com.lh.pojo.ItemsSpec;
import com.lh.pojo.vo.CommentLevelVO;
import com.lh.pojo.vo.ItemCommentVO;
import com.lh.pojo.vo.SearchItemsVO;
import com.lh.pojo.vo.ShopCartVO;
import com.lh.utils.PagedGridResult;

import java.util.List;

/**
 * @program: foodie-dev
 * @description:
 * @author: LH
 * @create: 2022-05-06 17:25
 **/
public interface ItemService {

    /**
     * 根据商品id查询商品
     * @param itemId
     * @return
     */
    public Items queryItem(String itemId);

    /**
     * 根据商品id查询商品图片
     * @param itemId
     * @return
     */
    public List<ItemsImg> queryItemImgList(String itemId);

    /**
     * 根据商品id查询商品规格
     * @param itemId
     * @return
     */
    public List<ItemsSpec> queryItemSpecList(String itemId);

    /**
     * 根据商品id查询商品参数
     * @param itemId
     * @return
     */
    public ItemsParam queryItemParam(String itemId);

    /**
     * 查询三种评价的数目
     * @param itemId
     * @return
     */
    public CommentLevelVO getCommentLevelNum(String itemId);

    /**
     * 获取评价详情
     * @param itemId
     * @param level
     * @param page
     * @param pageSize
     * @return
     */
    public PagedGridResult getComments(String itemId, Integer level, Integer page, Integer pageSize);

    /**
     * 根据关键字模糊查询商品
     * @param keywords
     * @param sort
     * @param page
     * @param pageSize
     * @return
     */
    public PagedGridResult searchItemsByKeywords(String keywords, String sort, Integer page, Integer pageSize);

    /**
     * 根据商品分类搜索商品
     * @param catId
     * @param sort
     * @param page
     * @param pageSize
     * @return
     */
    public PagedGridResult searchItemsByCatId(Integer catId, String sort, Integer page, Integer pageSize);

    /**
     * 刷新购物车商品规格
     * @param specIdList
     * @return
     */
    public List<ShopCartVO> refreshShopCart(List<String> specIdList);

    /**
     * 根据id获取商品规格
     * @param id
     * @return
     */
    public ItemsSpec getItemsSpecById(String id);

    /**
     * 通过id和ismain查找img
     * @param itemId
     * @return
     */
    public ItemsImg queryItemImgByItemIdAndIsMain(String itemId);

    /**
     * 更改商品库存
     * @param specId
     * @param buyCounts
     */
    public void decreaseItemSpecStock(String specId, Integer buyCounts);
}
